吴宏东 - 记于2018年06月29日 - 博客 https://segmentfault.com/u/wu...
Linux 文件目录
文件类型
[-] 普通文件;
[d] 目录;
[l] 符号链接;
[c] 字符设备;
[b] 块设备;
[s] 套接字;
[p] 命名管道;
常见后缀
*.txt 文本文件;
*.conf 配置文件;
.html/.xml/.yml/.sql HTML/XML/YAML/SQL文件;
.c/.cpp C/C++语言源程序文件;
.so/.ko/*.lib 模块文件、库文件;
.sh/.php/.py/.pl/*.rb Shell/PHP/Python/Perl/Ruby脚本文件;
*.rpm RPM文件;
*.tar tar 存档文件;
.gz/.bz2/*.xz 由gzip/bzip2/xz生成的压缩文件;
*.lock 用来表示某个程序或某种服务正在运行的锁文件;
*~备份文件;
Shell 命令
cmd [-options] <arguments>;
单字符参数前使用一个减号(-),单词参数前使用两个减号(--);
多个单字符参数前可使用一个减号;
通配符
以.开头的文件或目录是隐藏的;
[*]匹配任何字符和任何数字的字符;
[?]匹配任何单字符;
[...]匹配任何包含在括号内的单字符;
[!...]匹配任何不包含在括号内的单字符;
# 列出当前目录下所有c语言源文件
ls *.c;
# 列出/home目录下所有子目录下所有c语言源文件
ls /home/*/*.c;
# 列出当前目录下所有以test开头,随后一个字符任意的.txt文件
ls test?.txt;
# 列出当前目录下首字符是a或b或c的所有文件
ls [abc]*;
# 列出当前目录下首字符不是a或b或c的所有文件
ls [!abc]*;
# 列出当前目录下首字符是字母的所有文件
ls [a-zA-Z]*;
链接
硬链接:两个文件指向硬盘上一个存储空间,对两个文件中任何一个进行修改都会影响另一个文件,删除其中一个硬盘空间不会释放,链接数会减1;
软链接:创建一个文件指向另一个文件,无法对软链接文件进行内容修改,删除软链接文件的话,对源文件不影响,删除源文件的话,软链接文件会找不到源文件成为死链接;
# 创建硬链接文件hard
ln source hard;
# 创建软连接文件soft
ln -s source soft;
设备文件
设备文件指计算机外围硬件装置,即除了CPU和内存以外的设备;
所有设备文件都存放在/dev目录下;
/dev/sd* 硬盘设备,sda1表示第一块硬盘的第一个分区,sdb2表示第二块硬盘的第二个分区;
/dev/sr0 光驱设备、移动设备;
/dev/console 系统控制台;
/dev/tty* 本地终端设备;
/dev/pts/* 伪终端设备;
/dev/ppp* ppp设备,(Point to Point)协议设备,传统的拨号上网;
/dev/lp* 并口设备,lp0表示第一个并口设备,lp1表示第二个并口设备;
/dev/null 空设备,也称为“黑洞”,所有写入它的内容都将丢失,用于屏蔽终端输出;
/dev/zero 零设备,可以产生不断的二进制零流,用于创建指定长度的空文件;
Linux 目录
/bin 存放二进制可执行程序;
/sbin 存放二进制可执行程序,但是只有root用户才能访问;
/dev 存放设备文件;
/boot 存放系统引导文件;
/etc 存放系统配置文件;
/home 存放用户文件根目录;
/lib+lib64 存放共享库和内核模块;
/lost+found 存放系统检查结果,发现不合法的文件都会存放在这里,通常是空的,除非系统遭受异常损坏;
/mnt 临时文件系统的挂载点目录;
/media 即插即用的存储设备的挂载点自动在这个目录下创建;
/opt 第三方软件的存放目录;
/proc 是一个虚拟的文件系统,存放当前内存的映射,用于在不重启机器的情况下管理内核;
/root 超级用户目录;
/srv 系统对外提供服务的目录;
/tmp 存放各种临时文件;
/usr 存放系统应用程序;
/var 存放随时需要修改的文件,如系统日志、脱机工作目录等;
文件目录操作
# 显示当前目录下的所有文件和目录(包含隐藏的)
ls -a;
# 以长格式列表显示
ls -l;
# 以递归的方式显示当前目录及子目录下的所有内容
ls -R;
# 仅显示/home目录本身,不显示目录下的内容
ls -dl /home;
# 显示当前目录的全路径
pwd;
# 创建目录连同子目录一起创建
mkdir -p /home/wuhd/test;
# 创建文件test.txt
touch test.txt;
# 进入/home目录
cd /home;
# 进入当前目录
cd .;
# 返回上一级目录
cd ..;
# 返回上二级目录
cd ../..;
# 显示当前目录以及子目录的树形结构
tree;
# 显示/home目录下的2级的树形结构
tree -L 2 /home;
# 复制/home下某个文件到/opt目录下
cp /home/test /opt/test;
# 复制/home下所有文件到/opt目录下
cp /home/* /opt;
# 移动/home下某个文件到/opt目录下
mv /home/test /opt/test;
# 强制删除文件
rm -f /home/test;
# 删除当前目录下的所有隐藏文件
rm .*;
# 强制删除wuhd目录下的所有内容
rm -rf /tmp/wuhd;
# 在当前目录及其子目录下查找以yum开头的文件
find . -name 'yum*';
# 在当前目录及其子目录下查找属主wuhd的文件
find . -user "wuhd";
# 仅在当前目录下查找以yum开头的文件
ls yum*;
文本操作
正则表达式:
^ 匹配首字符,如^x,以字符x开始的字符串;
$ 匹配尾字符,如x$,以字符x结尾的字符串;
. 匹配任意一个字符,如l..e,可匹配love,life;
? 匹配任意一个可选字符,如xy?,可匹配x,xy;
* 以前面一个字符匹配零次或多次重复,如xy*,可匹配x,xy,xyy;
+ 以前面一个字符匹配一次或多次重复,如xy+,可匹配xy,xyy,xyyy;
[...] 匹配任意一个字符,如[xyz],可匹配x,y,z;
| 以或逻辑匹配多个匹配,如abc|xyz,可匹配abc或xyz;
\ 转义字符,如\*,可匹配字符*;
# 正序查看文件
cat /etc/passwd;
# 显示行号
cat -n /etc/passwd;
# 倒序查看文件
tac /etc/passwd;
# 分屏显示,空格键、回车键翻阅,q退出
more /var/log/messages;
# 分屏显示,空格键、回车键、PgUp、PgDn翻阅,q退出
less /var/log/messages;
# 显示前4行内容
head -10 /var/log/messages;
# 显示后4行内容
tail -10 /var/log/messages;
# 行数 字数 字符数 文件名
wc /var/log/messages;
# 对文本内容排序(以ASCII码顺序)
sort txt;
# 相同行只输出一行
sort -u txt;
# 对文本内容排序(以ASCII码逆序)
sort -r txt;
# 对文本字符串数值排序
sort -n txt;
# 比较文件差异
diff httpd.conf httpd.conf.bak;
# windows替换为linux
sed -i 's/windows/linux/g' txt;
# 删除每行结尾的空格
sed -i 's/*$//' txt;
# 在每行行首加上"> '
sed -i 's/^/> /' txt;
# 在每行行首去掉"> "
sed -i 's/^> //' txt;
# 删除所有空白行
sed -i '/^$/d' txt;
打包压缩
# 将111文件夹打包成111.tar
tar -cvf 111.tar 111;
# 解包
tar -xvf 111.tar;
# 将111文件夹用gzip打包压缩成111.tar.gz
tar -zcvf 111.tar.gz 111;
# 解压缩
tar -zxvf 111.tar.gz;
# 将111文件夹用bzip打包压缩成111.tar.bz
tar -jcvf 111.tar.bz 111;
# 解压缩
tar -jxvf 111.tar.bz;
# 将111文件夹用xz打包压缩成111.tar.xz
tar -Jcvf 111.tar.xz 111;
# 解压缩
tar -Jxvf 111.tar.xz;
常用命令
# 显示进程树
pstree;
# 显示系统运行时间、用户数、平均负载
uptime;
# 显示文件信息
stat txt;
# 显示在线的登录用户
who;
# 显示用户自己的身份
whoami;
# 查找程序ls的位置
whereis ls;
# 显示文件或目录的大小,不显示目录中每个文件大小
du -sh /;
# 显示1949年日历
cal 1949;
# 显示1949年10月日历
cal 10 1949;
VI 编辑器
普通模式:
O 上开新行;
o 下开新行;
I 行首;
A 行尾;
/str 向右搜索str;
?str 向左搜索str;
n 下一个;
N 反向下一个;
u 撤销操作;
Z+Z 保存退出;
Z+Q 不保存退出;
<ESC> 退出插入模式;
yy 复制当行内容;
p 粘贴复制的内容;
命令模式:
:set number 显示行号;
:set nonumber 不显示行号;
:n 跳到第n行;
:d 删除当前行;
:n1,n2 d 删除从n1行到n2行内容;
:n1,n2 w file 保存从n1行到n2行内容到文件file;
:!cmd 执行shell命令cmd;
:r!cmd 执行cmd命令并将输出的内容写入到光标位置;
:q 退出vi;
:wq 保存退出vi;
:q! 强制不保存退出vi;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。